import request from "@/utils/request"

const ROLE_BASE_URL = "/api/object/com.siline.chimes/ChimesRole"

class RoleAPI {
  /** 获取角色分页数据 */
  static getPage(data: QueryCondition = {}) {
    return request<any, ResponseData<PageResult<RoleVO[]>>>({
      url: `${ROLE_BASE_URL}/paged_query`,
      method: "post",
      data,
    })
  }

  /** 获取角色下拉数据源 */
  static getOptions(data: QueryCondition = {}) {
    return request<any, ResponseData<OptionType[]>>({
      url: `${ROLE_BASE_URL}/query`,
      method: "post",
      data,
    })
  }

  /** 获取角色数据列表 */
  static query(data: QueryCondition = {}) {
    return request<any, ResponseData<RoleVO[]>>({
      url: `${ROLE_BASE_URL}/query`,
      method: "post",
      data,
    })
  }

  /**
   * 获取角色表单数据
   *
   * @param id 角色ID
   * @returns 角色表单数据
   */
  static getFormData(id: number) {
    return request<any, ResponseData<RoleForm>>({
      url: `${ROLE_BASE_URL}/select/${id}`,
      method: "get",
    })
  }

  /** 添加角色 */
  static add(data: RoleForm) {
    return request<any, ResponseData<RoleForm>>({
      url: `${ROLE_BASE_URL}/insert`,
      method: "post",
      data: data,
    })
  }

  /**
   * 更新角色
   *
   * @param data 角色表单数据
   */
  static update(data: RoleForm) {
    return request<any, ResponseData<RoleForm>>({
      url: `${ROLE_BASE_URL}/update`,
      method: "post",
      data: data,
    })
  }

  /**
   * 根据条件批量删除角色
   *
   * @param data
   */
  static deleteByCondition(data: QueryCondition) {
    return request({
      url: `${ROLE_BASE_URL}/delete_by`,
      method: "post",
      data: data,
    })
  }

  /**
   * 分配菜单权限
   *
   * @param roleId 角色ID
   * @param data 菜单ID集合
   */
  static updateRoleMenus(roleId: number, data: number[]) {
    return request({
      url: `${ROLE_BASE_URL}/${roleId}/menus`,
      method: "put",
      data: data,
    })
  }
}
export default RoleAPI

/** 角色响应数据 */

/** 角色分页对象 */
export interface RoleVO {
  /** 角色编码 */
  role_code?: string
  /** 角色ID */
  role_id?: number
  /** 角色名称 */
  name?: string
  /** 级别 */
  level?: number
  /** 创建时间 */
  create_time?: Date
  /** 修改时间 */
  update_time?: Date
  /** 创建人 */
  create_by?: string
  /** 修改人 */
  update_by?: string
  /** 修改时间 */
  description?: string
  /** 数据权限 */
  data_scope?: string
}

/** 角色表单对象 */
export interface RoleForm {
  /** 角色编码 */
  role_code?: string
  /** 角色ID */
  role_id?: number
  /** 角色名称 */
  name?: string
  /** 级别 */
  level?: number
  /** 创建时间 */
  create_time?: Date
  /** 修改时间 */
  update_time?: Date
  /** 创建人 */
  create_by?: string
  /** 修改人 */
  update_by?: string
  /** 修改时间 */
  description?: string
  /** 数据权限 */
  data_scope?: string
}
